﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace LI4.Presentation
{
    public partial class InscreverCF : Form
    {
        public InscreverCF()
        {
            InitializeComponent();
            tabControl1.Enabled = false;
        }

        private void InscreverCF_Load(object sender, EventArgs e)
        {
            foreach (Business.Area areaa in Program.areas)
                area1CB.Items.Add(areaa);
            area1CB.SelectedIndex = 0;

            Business.Area area = (Business.Area)area1CB.SelectedItem;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            
        }

        private void area1CB_SelectedIndexChanged(object sender, EventArgs e)
        {
            string area = area1CB.Text.Trim();

            cursoCB.Text = "";
            cursoCB.Items.Clear();

            foreach (Business.Curso curso in Program.cursos)
            {
                if (curso.Area.Nome.Equals(area)) cursoCB.Items.Add(curso);
            }

            if (cursoCB.Items.Count > 0)
            {
                cursoCB.SelectedIndex = 0;
                tabControl1.Enabled = true;
            }

            else
            {
                tabControl1.Enabled = false;
                areaCB.Items.Clear();
                vagasTB.Text = "";
                remuneracaoTB.Text = "";
                moradaTB.Text = "";
                cp1TB.Text = "";
                cp2TB.Text = "";

                descricaoTB.Text = "";
                nomeTB.Text = "";
                distritoCB.Items.Clear();
                localidadeCB.Items.Clear();
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
           
                Business.Curso curso = (Business.Curso)cursoCB.SelectedItem;
                nomeTB.Text = curso.Nome;

                int l = 0, d = 0, a = 0, ll = 0, dd = 0, aa = 0;

                distritoCB.Items.Clear();
                foreach (Business.Distrito dist in Program.distritos)
                {
                    distritoCB.Items.Add(dist);
                    if (dist.Nome.Equals(curso.Localidade.Distrito.Nome)) dd = d;
                    d++;
                }
                distritoCB.SelectedIndex = dd;

                localidadeCB.Items.Clear();
                foreach (Business.Localidade local in Program.localidades)
                {
                    if (local.Distrito.Nome.Equals(curso.Localidade.Distrito.Nome))
                    {
                        localidadeCB.Items.Add(local);
                        l++;
                    }
                    if (local.Nome.Equals(curso.Localidade.Nome)) ll = l;

                }
                localidadeCB.SelectedIndex = ll - 1;

                areaCB.Items.Clear();
                foreach (Business.Area area in Program.areas)
                {
                    areaCB.Items.Add(area);
                    if (area.Nome.Equals(curso.Area.Nome)) aa = a;
                    a++;
                }

                areaCB.SelectedIndex = aa;
                vagasTB.Text = (curso.Totalvagas - curso.Nrinscritos).ToString();
                remuneracaoTB.Text = curso.Remuneracao.ToString();
                moradaTB.Text = curso.Rua;
                cp1TB.Text = curso.CodPostal.Substring(0, 4);
                cp2TB.Text = curso.CodPostal.Substring(3, 3);
                descricaoTB.Text = curso.Descricao;

                
            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string username = usernameTB.Text.Trim();
            string pass = passwordTB.Text.Trim();
            Business.Curso curso;
            Data.Curso dataC = new LI4.Data.Curso();


            if (cursoCB.Text.Length > 0)
            {
                curso = new Business.Curso((Business.Curso)cursoCB.SelectedItem);

                if (dataC.existeCandidatoCurso(username, curso.CodCurso))
                {
                    
                    Data.Login log = new Data.Login();
                    Business.Login login = log.autenticar(username, pass);

                    if ((curso.Totalvagas - curso.Nrinscritos) == 0)
                        MessageBox.Show(this, "Curso esta cheio!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    else
                    {
                        int estado = login.Estado;


                        if (estado == Business.Login.SUCCESS)
                        {
                            int success = Business.GerirCandidatos.inserirCandidatoCurso(username, curso.CodCurso);
                            if (success == Data.Ligacao.DBERROR)
                                MessageBox.Show(this, "Ocorreu um erro!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            else
                            {
                                MessageBox.Show(this, "Utilizador inscrito no curso com sucesso!", "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                                this.Dispose();
                            }
                        }

                        else if (estado == Business.Login.BADLOGIN)
                            MessageBox.Show(this, "Login nao existe!", "Autenticaçao.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        else if (estado == Business.Login.BADPASS)
                            MessageBox.Show(this, "Password Errada!", "Autenticaçao.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                    }
                }
                else
                    MessageBox.Show(this, "Utilizador já inscrito no curso!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
                MessageBox.Show(this, "Tem que escolher um curso!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        }

        

        private void axWebBrowser1_DocumentComplete_1(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
        {
            mshtml.IHTMLDocument2 doc = axWebBrowser1.Document as mshtml.IHTMLDocument2;
            mshtml.HTMLInputElement result = (mshtml.HTMLInputElement)doc.all.item("address", 0);
            Business.Localidade local = (Business.Localidade)localidadeCB.SelectedItem;
            if (moradaTB.Text.Length > 0 && localidadeCB.Text.Length > 0) result.value = moradaTB.Text.Trim() + ", " + local.Nome;

            mshtml.HTMLInputElement lathtml = (mshtml.HTMLInputElement)doc.all.item("click_lat", 0);
            mshtml.HTMLInputElement longhtml = (mshtml.HTMLInputElement)doc.all.item("click_long", 0);


            Business.Curso curso = (Business.Curso)cursoCB.SelectedItem;

            string lat = curso.Latitude.ToString();
            string lng = curso.Longitude.ToString();
            lat = lat.Replace(',', '.');
            lng = lng.Replace(',', '.');

            lathtml.value = lat;
            longhtml.value = lng;
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (tabControl1.SelectedIndex==2)
            {
                object empty = System.Reflection.Missing.Value;
                axWebBrowser1.Navigate(@"C:/Documents and Settings/fernando/My Documents/Visual Studio 2008/Projects/Li4SVN/Google Maps/ggmps.html");

                mshtml.IHTMLDocument2 doc = axWebBrowser1.Document as mshtml.IHTMLDocument2;
            }
        }

        
    }
}
